/*
 * @Description: 
 * @Author: Zilu
 * @Date: 2021-11-14 22:18:40
 * @Version: 
 * @LastEditTime: 2021-11-14 22:25:37
 * @LastEditors: Zilu
 */

// strcnvt.c -- 使用 strtol
#include <stdio.h>
#include <stdlib.h>

#define LIM 30
char *s_gets(char *st, int n);

int main(int argc, char const *argv[])
{
    char number[LIM];
    char *end;
    long value;

    puts("Enter a number (empty line to quit):");
    while (s_gets(number, LIM) && number[0] != '\0')
    {
        value = strtol(number, &end, 10);   //十进制读入
        printf("base 10 input, base 10 output: %ld, stopped at %s (%d)\n", value, end, *end);
        value = strtol(number, &end, 16);   //十六进制读入
        printf("base 10 input, base 16 output: %ld, stopped at %s (%d)\n", value, end, *end);
        puts("Next number:");
    }
    puts("Bye!\n");

    return 0;
}

char* s_gets(char *st, int n){
    char *ret_val;
    int i = 0;

    ret_val = fgets(st, n, stdin);
    if (ret_val){
        while (st[i] != '\n' && st[i] != 0)
            i++;
        if (st[i] == '\n')
            st[i] = '\0';
        else
            while (getchar() != '\n'){
                continue;
            }
    }

    return ret_val;
}

